home *** CD-ROM | disk | FTP | other *** search
/ Aminet 1 (Walnut Creek) / Aminet - June 1993 [Walnut Creek].iso / aminet / mus / play / multiplsr.lha / include / macros.h < prev    next >
C/C++ Source or Header  |  1992-03-03  |  4KB  |  132 lines

  1. /* Macros - Useful macros - Bryan Ford */
  2. #ifndef BRY_MACROS_H
  3. #define BRY_MACROS_H
  4.  
  5. #ifndef EXEC_LIBRARIES_H
  6. #include <exec/libraries.h>
  7. #endif
  8.  
  9. #ifndef memset
  10.  
  11. /* Builtin memory functions */
  12. #define memset(to,c,n) __builtin_memset(to,c,n)
  13. #define memcpy(to,fr,n) __builtin_memcpy(to,fr,n)
  14. #define memcmp(a,b,n) __builtin_memcmp(a,b,n)
  15.  
  16. /* Prototypes for builtin memory functions */
  17. void *__builtin_memset(void *to,void *c,int n);
  18. void *__builtin_memcpy(void *to,void *fr,int n);
  19. int __builtin_memcmp(void *a,void *b,int n);
  20.  
  21. #endif
  22.  
  23. #ifndef strlen
  24.  
  25. /* Builtin string functions */
  26. #define strlen(str) __builtin_strlen(str)
  27. #define strcpy(to,fr) __builtin_strcpy(to,fr)
  28. #define strcmp(a,b) __builtin_strcmp(a,b)
  29.  
  30. /* Prototypes for builtin string functions */
  31. int __builtin_strlen(char *str);
  32. char *__builtin_strcpy(char *to,char *fr);
  33. int __builtin_strcmp(char *a,char *b);
  34.  
  35. #endif
  36.  
  37. /* Simple math macros */
  38. #ifndef abs
  39. #ifndef __GNUC__
  40. #define abs(a) ((a) >= 0 ? (a) : -(a))
  41. #else
  42. #define abs(a) ({int _a = (a); _a >= 0 ? _a : -_a; })
  43. #endif
  44. #endif
  45.  
  46. #ifndef min
  47. #ifndef __GNUC__
  48. #define min(a,b) ((a) < (b) ? (a) : (b))
  49. #define max(a,b) ((a) > (b) ? (a) : (b))
  50. #else
  51. #define min(a,b) ({int _a = (a), _b = (b); _a < _b ? _a : _b; })
  52. #define max(a,b) ({int _a = (a), _b = (b); _a > _b ? _a : _b; })
  53. #endif
  54.  
  55. #ifndef sign
  56. #ifndef __GNUC__
  57. #define sign(a) ((a) > 0 ? 1 : (a) < 0 ? -1 : 0)
  58. #else
  59. #define sign(a) ({int _a = (a); _a > 0 ? 1 : _a < 0 ? -1 : 0; })
  60. #endif
  61. #endif
  62.  
  63. #define choprange(v,low,hi) ((v) < (low) ? (low) : (v) > (hi) ? (hi) : (v))
  64. #define chopzrange(v,hi) choprange(v,0,hi)
  65.  
  66. /* See if we're running in a 2.0 system or not */
  67. #define Is20 (((struct Library*)SysBase)->lib_Version >= 36)
  68.  
  69. /* Process/task pointers */
  70. #define TaskPtr ((struct Task*)FindTask(0L))
  71. #define ProcPtr ((struct Process*)TaskPtr)
  72.  
  73. /* ChangeDir() CurrentDir()'s to a new directory and UnLock()'s the old one */
  74. #define ChangeDir(lock) (UnLock(CurrentDir(lock)))
  75.  
  76. /* Mimics other Blt...() routines */
  77. #define BltBitMapBitMap(fbm,fx,fy,tbm,tx,ty,w,h,minterm) BltBitMap(fbm,fx,fy,tbm,tx,ty,w,h,minterm,0xff,0)
  78. #define BltRastPortRastPort(frp,fx,fy,trp,tx,ty,w,h,minterm) ClipBlit(frp,fx,fy,trp,tx,ty,w,h,minterm)
  79.  
  80. /* Mimics the global "custom" structure that was in Amiga.lib */
  81. #define custom (*((struct Custom*)0xDFF000))
  82.  
  83. /* We don't want SetIoErr() anymore - use the new error system! */
  84. #define SetIoErr(blah) obsolete! obsolete! obsolete! obsolete! obsolete!
  85.  
  86. /* Clear the BSS data for the program */
  87. #define ClearBSS() \
  88.   { extern long __far _BSSBAS[], __far _BSSLEN; \
  89.     register long len = (long)(&_BSSLEN); register long *p = _BSSBAS; \
  90.     do { *(p++) = 0; } while (--len); }
  91.  
  92. /* Display an error message in an Intuition alert (usually at the end of die()) */
  93. #define AlertMes(progname,message) \
  94.   if(message) \
  95.     { \
  96.     char alertbuf[200]; \
  97.       memset(alertbuf,0,200); \
  98.       memcpy(alertbuf,"\x00\x10\x19Press either mouse button to end program\x00\x01\x00\x10\x0d"progname" - Fatal Error: ",64+strlen(progname)); \
  99.       strcpy(alertbuf+64+strlen(progname),message); \
  100.       DisplayAlert(RECOVERY_ALERT,alertbuf,35); \
  101.     }
  102.  
  103. /* Display a fixed error message in an Intuition alert */
  104. #define AlertFixedMes(message) \
  105.   DisplayAlert(RECOVERY_ALERT, \
  106.   "\x00\x10\x19Press either mouse button to end program\x00\x01\x00\x10\x0d"message"\00",35);
  107.  
  108. /* For debuggin purposes */
  109. #define illegal __builtin_emit(0x4afc);
  110.  
  111. /* Raw keycodes */
  112. #define RawSpace        0x40
  113. #define RawESC          0x45
  114. #define RawDel          0x46
  115. #define RawUp           0x4c
  116. #define RawDown         0x4d
  117. #define RawRight        0x4e
  118. #define RawLeft         0x4f
  119. #define RawF1           0x50
  120. #define RawF2           0x51
  121. #define RawF3           0x52
  122. #define RawF4           0x53
  123. #define RawF5           0x54
  124. #define RawF6           0x55
  125. #define RawF7           0x56
  126. #define RawF8           0x57
  127. #define RawF9           0x58
  128. #define RawF10          0x59
  129. #define RawHelp         0x5f
  130.  
  131. #endif
  132.